/*****************************************************************************
 * Copyright (C) Stacy Curl. All rights reserved.                            *
 * ------------------------------------------------------------------------- *
 * The software in this package is published under the terms of the BSD      *
 * style license a copy of which has been included with this distribution in *
 * the LICENSE.txt file.                                                     *
 *****************************************************************************/
package picounit;

import picounit.mocker.ArrayStubConsequenceMatcher;
import picounit.mocker.BooleanArrayStubConsequenceMatcher;
import picounit.mocker.BooleanStubConsequenceMatcher;
import picounit.mocker.ByteArrayStubConsequenceMatcher;
import picounit.mocker.ByteStubConsequenceMatcher;
import picounit.mocker.CharArrayStubConsequenceMatcher;
import picounit.mocker.CharStubConsequenceMatcher;
import picounit.mocker.DoubleArrayStubConsequenceMatcher;
import picounit.mocker.DoubleStubConsequenceMatcher;
import picounit.mocker.FloatArrayStubConsequenceMatcher;
import picounit.mocker.FloatStubConsequenceMatcher;
import picounit.mocker.IntArrayStubConsequenceMatcher;
import picounit.mocker.IntStubConsequenceMatcher;
import picounit.mocker.LongArrayStubConsequenceMatcher;
import picounit.mocker.LongStubConsequenceMatcher;
import picounit.mocker.ShortArrayStubConsequenceMatcher;
import picounit.mocker.ShortStubConsequenceMatcher;
import picounit.mocker.StringArrayStubConsequenceMatcher;
import picounit.mocker.StringStubConsequenceMatcher;
import picounit.mocker.StubConsequenceMatcher;
import picounit.mocker.VoidAction;

public interface When {
	BooleanStubConsequenceMatcher calling(boolean ignore);
	ByteStubConsequenceMatcher calling(byte ignore);
	CharStubConsequenceMatcher calling(char ignore);
	DoubleStubConsequenceMatcher calling(double ignore);
	FloatStubConsequenceMatcher calling(float ignore);
	IntStubConsequenceMatcher calling(int ignore);
	LongStubConsequenceMatcher calling(long ignore);
	ShortStubConsequenceMatcher calling(short ignore);
	StringStubConsequenceMatcher calling(String ignore);
	<T> StubConsequenceMatcher<T> calling(T ignore);

	BooleanArrayStubConsequenceMatcher calling(boolean[] ignore);
	ByteArrayStubConsequenceMatcher calling(byte[] ignore);
	CharArrayStubConsequenceMatcher calling(char[] ignore);
	DoubleArrayStubConsequenceMatcher calling(double[] ignore);
	FloatArrayStubConsequenceMatcher calling(float[] ignore);
	IntArrayStubConsequenceMatcher calling(int[] ignore);
	LongArrayStubConsequenceMatcher calling(long[] ignore);
	ShortArrayStubConsequenceMatcher calling(short[] ignore);
	StringArrayStubConsequenceMatcher calling(String[] ignore);
	<T> ArrayStubConsequenceMatcher<T> calling(T[] ignore);

	void raise(Throwable throwable);
	void perform(VoidAction voidAction);
}